The Haver

Inspired by The Proclaimers’ message board this blog is called The Haver.

2021-05-22

On that day I posted a longer statement about “Personal Mastery’ on Cuis’ mailing list:

Personal Mastery vs. Community

Philip’s story of porting Magma and my first real encounter with the opensmalltalk VM taught me a lesson, alas it left a serious open question without proper answer.

A famous book, we probably all know, states:

“Personal Mastery. If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.”

(See https://cuis-smalltalk.github.io/TheCuisBook/Historical-Context.html)

Personal Mastery can be achieved with Cuis, Haver is a fine example of that.

But once you start with Magma or the OSVM, you can make the transition from “Personal Mastery” to “Cargo-Cult” programming in less than 30 minutes.

My observation is: Simple and approachable systems tend to grow, sometimes their community of users grows with them. In this case an interested newcomer will find a critical mass of people, that have achieved personal mastery and (sic!) also can explain their insights to a newbie.

The big question is: How can an individual be a personal master in a certain topic and form a community that grows with him? (I intentionally avoid writing “her”, I have the gut feeling, that women do not have that sort of problem).

My Journey Into Databases

Plan A

In February and March 2021 I tried to solve this DB problem, by doing it right from scratch. I cast all the good ideas, I had accumulated over the years, into software. You may have guessed it, it soon grow over my head; thus I abandoned it. This was Plan A.

Plan B

Plan B was porting Magma to Cuis. Philip did a great job, he has good reasons to give up on that one.

Plan C

I had my doubts from the beginning, therefore I started Plan C, writing a wrapper for LMBD: http://www.lmdb.tech/doc/

This did not work and I did not want to debug this using gdb. So I quickly gave up and started Plan D:

Plan D

Porting Image Segments to Haver. It started well, after 20 minutes it could load the Squeak code into a Haver module, with duplicate classes neatly encapsulated into a module. It then took 2 hours to remove all the obscure dependencies on Projects and other Etoys stuff. Finally it produced a binary dump of a few test instances. Then I spent another to hours to find out on how to load that image segment back into a my image. I still don’t know how.

Again these image segments are nice example for someone with personal mastery,, who has lost everyone else to his climb to his personal Mount Everest. (Probably it was more than one person).

Plan E

Again I gave up and did the simplest thing that might possible work. I used an record format that supports updates and at the evening of the 13th of May I could persist some simple classes.

For obvious reasons I called that object store PlanE. You can find it here: https://hg.sr.ht/~cy-de-fect/HaverOnCuis/browse/haver/db/PlanE.pck.st?rev=tip

Currently it can’t be called a database, because it does no recovery. It can’t collect garbage either, but is still in a state, where it can be understood by others.

Therefore everyone is invited to climb the pass to personal mastery with me and contribute to that project. If there is demand I will remove all the dependencies to Haver’s modules and make it a simple Cuis project.

I want to avoid another Smalltalk project, that is only understood by its author, we have enough of those!

2021-05-11

Just tried to install Magma on Squeak: No joy, don’t know exactly which package to install. Installing the update -package still leaves some stuff missing.

2021-05-06

Really started with export-import wizard. Now we can automatically – the user is presented a menu – import symbols into a module that are exported by another module.

2021-05-06

Revised and published the release planning in the Minimum Viable Product sub-section.

2021-05-05

Added access-levels als Swift to modules. I had to implement a specialized compiler for the export/import wizard and we have environment-local symbols for a long time, I used the later to install selectors, that are local to the class or to the module for some methods.

Alas I had to do much hanky-panky with the method dictionary and sometimes complete recompilations are necessary, so I am not sure if these will stay. But I could prove a point.